export default {
  /**
 *
 * @param fn {Function}   实际要执行的函数
 * @param delay {Number}  延迟时间，单位是毫秒（ms）
 *
 * @return {Function}     返回一个“防反跳”了的函数
 */

  debounce(fn, delay) {
    // 定时器，用来 setTimeout
    let timer;

    // 返回一个函数，这个函数会在一个时间区间结束后的 delay 毫秒时执行 fn 函数
    return function debounce(...args) {
      // 保存函数调用时的上下文和参数，传递给 fn
      const context = this;

      // 每次这个返回的函数被调用，就清除定时器，以保证不执行 fn
      clearTimeout(timer);

      // 当返回的函数被最后一次调用后（也就是用户停止了某个连续的操作），
      // 再过 delay 毫秒就执行 fn
      timer = setTimeout(() => {
        fn.apply(context, args);
      }, delay);
    };
  },

  fistLetterUpper(str) {
    return str.charAt(0).toUpperCase() + str.slice(1);
  },

  /**
   * 比较app版本号大小
   * @param ver1
   * @param ver2
   * @returns {boolean}
   */
  versionComparison(ver1, ver2) {
    const version1pre = parseFloat(ver1);
    const version2pre = parseFloat(ver2);
    const version1next = ver1.replace(version1pre + '.', '');
    const version2next = ver2.replace(version2pre + '.', '');
    if (version1pre > version2pre) {
      return true;
    } else if (version1pre < version2pre) {
      return false;
    }
    if (version1next >= version2next) {
      return true;
    }
    return false;
  },
  /*
   * 生成随机字符串
   *
   * */
  generateRandom() {
    return (Math.ceil(Math.random() * 100000)).toString(16);
  }
};
